package edu.scau.cxq.gp.controller;


import com.github.pagehelper.PageInfo;
import edu.scau.cxq.gp.common.annotation.ResponseResult;
import edu.scau.cxq.gp.entity.RecordOut;
import edu.scau.cxq.gp.service.IRecordOutService;
import edu.scau.cxq.gp.entity.vo.RecordOutVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * @description 存储出库信息 前端控制器
 * @return
 * @author TLC
 */

@RestController
@ResponseResult
@RequestMapping("/record-out")
public class    RecordOutController {

    @Resource
    private IRecordOutService recordOutService;

    /**
     * 插入新出库信息
     * @param recordOut
     * @return
     */
    @PostMapping("/insertOne")
    public boolean insertOne(@RequestBody RecordOut recordOut) {

        if (!recordOutService.beforeRecordOut(recordOut)) {
            return false;
        }

        return recordOutService.save(recordOut);
    }

//    /**
//     * 查找出库信息
//     * @return
//     */
//    @GetMapping("/select")
//    public List<RecordOut> select(@RequestBody RecordOut recordOut) {
//        QueryWrapper queryWrapper = WrapperUtils.entitytoWrapper(recordOut);
//        List<RecordOut> recordOuts = recordOutService.list(queryWrapper);
//        return recordOuts;
//    }
//
//    /**
//     * 分页查找出库信息
//     * @return
//     */
//    @GetMapping("/selectByPage")
//    public IPage<RecordOut> selectByPage (Integer current, Integer size, @RequestBody RecordOut recordOut) {
//        Page<RecordOut> page = new Page<>(current, size);
//        QueryWrapper queryWrapper = WrapperUtils.entitytoWrapper(recordOut);
//        return recordOutService.page(page, queryWrapper);
//    }

    /**
     * 查找出库信息
     * @return
     */
    @GetMapping("/select")
    public PageInfo<RecordOutVO> select(Integer currentPage, Integer size, @RequestParam(value = "goodsId", required = false) Long goodsId,
                                        @RequestParam(value = "cusId", required = false) Long cusId,
                                        @RequestParam(value = "wareId", required = false) Long wareId) {
        PageInfo<RecordOutVO> recordOutVOList = recordOutService.getRecordOutVOList(currentPage, size, goodsId, cusId, wareId);
        return recordOutVOList;
    }

    /**
     * 撤销出库
     * @return
     */
    @PostMapping("/rollback")
    public boolean rollback(@RequestBody RecordOut recordOut) {
        return recordOutService.rollbackRecordOut(recordOut.getOutId());
    }

//    /**
//     * 删除（实际上是隐藏）
//     * @param cusId
//     * @return
//     */
//    @PutMapping("/deleteOne")
//    public boolean deleteOne(String cusId) {
//        QueryWrapper<RecordOut> queryWrapper = new QueryWrapper<>();
//        queryWrapper.eq("cus_id", cusId);
//        RecordOut cus = recordOutService.getOne(queryWrapper);
//        // 将隐藏位置1
//        cus.setCusHidden(1);
//        return recordOutService.updateById(cus);
//    }

//    /**
//     * 修改出库信息
//     * @RequestBody：
//     * 作用：
//     * 主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的)；
//     * @param recordOut
//     * @return
//     */
//    @PutMapping("/updateOne")
//    public boolean updateOne (@RequestBody RecordOut recordOut) {
//        return recordOutService.updateById(recordOut);
//    }
}
